package router

import (
	"douhu_backend/internal/services"
	"douhu_backend/internal/util"
	"fmt"

	"github.com/kataras/iris/v12"
)

// SetupCommonMiddleware 设置公共中间件
func SetupCommonMiddleware(app *iris.Application, sm *services.Manager) {
	// 从服务管理器获取 CORS 服务
	corsService := sm.GetCORS()

	// 打印 CORS 配置用于调试
	fmt.Println("corsConfig==========", util.JsonEncode(corsService.GetConfig()))

	// 使用 UseRouter 而不是 Use，确保 CORS 中间件在路由解析之前执行
	// 这样可以处理所有请求，包括 404 的 OPTIONS 请求
	app.UseRouter(corsService.Middleware())

	// 添加全局的 OPTIONS 处理器，确保所有路径的 OPTIONS 请求都能被处理
	app.Options("/{p:path}", func(ctx iris.Context) {
		// OPTIONS 请求已经在 CORS 中间件中处理了，这里只是确保路由存在
		ctx.StatusCode(204)
	})
}

// SetupCommonRoutes 设置公共路由
func SetupCommonRoutes(app *iris.Application) {
	// 静态文件服务，用于提供上传的文件
	app.HandleDir("/uploads", "./uploads")

	// Test route to verify server is working
	app.Get("/ping", func(ctx iris.Context) {
		ctx.JSON(map[string]string{"message": "pong"})
	})
}
